package view.accciones;
import java.awt.event.ActionEvent;
import java.beans.PropertyChangeListener;

import javax.swing.AbstractAction;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

import model.Atributo;
import model.AtributoCompuesto;
import model.Entidad;
import model.Relacion;

import utils.Mensaje;
import utils.Parseador;
import view.atributo.EditarAtributoCompuestoDialogo;
import view.atributo.AtributoDialogo;
import view.entidad.EditarEntidadDialogo;
import view.relacion.EditarRelacionDialogo;

import constants.DiagramaConstants;
import controller.ManagerProyecto;

public class  EditarAction extends AbstractAction {

	private static final long serialVersionUID = 1L;
	
	private ManagerProyecto controlProyeto;
	private String nombreElemento;
	private String tipoElemento;
	private String referenciaAlElementoOrigen;
	
	public EditarAction(String name,String nombreElemento,String tipoElemento,String reference){
		super(name);
		this.nombreElemento = nombreElemento;
		this.controlProyeto = ManagerProyecto.getInstance();
		this.referenciaAlElementoOrigen = reference;
		this.tipoElemento = tipoElemento;
	}
	
	private String getTipoEntidad(){
		Entidad modelEntidad = new Entidad("");
		for(Entidad entidad: controlProyeto.getProyecto().getListaEntidades()){
				 if (entidad.getIdentificator().equals(this.nombreElemento)){
					 modelEntidad = entidad;
				 }
		}
		return modelEntidad.getTipo();
	}
	

	@Override
	public void actionPerformed(ActionEvent arg0) {
		//TODO: Resta agregar si es una relacion.
		if (tipoElemento.equals(DiagramaConstants.ENTIDAD)){
		
			EditarEntidadDialogo editarEntidad = new EditarEntidadDialogo(controlProyeto.getProyecto(), controlProyeto.getDiagramaEnPantalla()
					, nombreElemento,getTipoEntidad());
			editarEntidad.setVisible(true);
		}
		else if (tipoElemento.equals(DiagramaConstants.ATRIBUTO_COMPUESTO)){
			EditarAtributoCompuestoDialogo editarAtributoCompuesto = new EditarAtributoCompuestoDialogo(controlProyeto.getProyecto(),
					controlProyeto.getDiagramaEnPantalla(), referenciaAlElementoOrigen);
			editarAtributoCompuesto.setVisible(true);
		}
		else if (tipoElemento.equalsIgnoreCase(DiagramaConstants.RELACION)){
			EditarRelacionDialogo editarRelacion = new EditarRelacionDialogo(controlProyeto.getProyecto(),controlProyeto.getDiagramaEnPantalla()
					, nombreElemento);
			editarRelacion.setVisible(true);

		}else {
//			AtributoDialogo editarAtributo = new AtributoDialogo(controlProyeto.getProyecto(), controlProyeto.getDiagramaEnPantalla(), quitarCardinalidadDelNombreDelAtributo());
//			editarAtributo.setVisible(true);
		}
	}
	


}
